package com.diver.flinkdemo.entity.xxt;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.diver.flinkdemo.utils.annotation.Dict;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;

import java.io.Serializable;
import java.util.Date;

/**
 * @Description: 下发权限记录表
 * @Author: jeecg-boot
 * @Date: 2022-05-20
 * @Version: V1.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("issued_permission_record")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "issued_permission_record对象", description = "下发权限记录表")
public class IssuedPermissionRecord implements Serializable {
    private static final long serialVersionUID = 1L;

//    /**
//     * 主键
//     */
//    @TableId(type = IdType.ASSIGN_ID)
//    @ApiModelProperty(value = "主键")
//    private String id;
    /**
     * 下发查询唯一标识
     */
    @TableId
    @Excel(name = "下发查询唯一标识", width = 15)
    @ApiModelProperty(value = "主键，下发查询唯一标识")
    private String tagId;
    /**
     * 批量下发任务id
     */
    @Excel(name = "批量下发任务id", width = 15)
    @ApiModelProperty(value = "批量下发任务id")
    @Dict(dictTable = "batch_issued_permission_task", dicText = "task_name", dicCode = "id")
    private String taskId;

    /**
     * 设备id
     */
    @Excel(name = "设备id", width = 15)
    @ApiModelProperty(value = "设备id")
    @Dict(dictTable = "device_info", dicText = "device_name", dicCode = "id")
    private String deviceId;

    /**
     * 下发设备类型，1：门禁通行设备；2：学生证
     */
    @Excel(name = "设备类型", width = 15)
    @ApiModelProperty(value = "设备类型")
    @TableField("device_type")
    private int deviceType;

    /**
     * 下发指令
     */
    @Excel(name = "下发指令", width = 15)
    @ApiModelProperty(value = "下发指令")
    private String instructions;

    /**
     * 指令id
     */
    @Excel(name = "指令id", width = 15)
    @ApiModelProperty(value = "指令id")
    private String commandId;

    /**
     * 下发指令参数
     */
    @Excel(name = "下发指令参数", width = 15)
    @ApiModelProperty(value = "下发指令参数")
    private String instruParams;

    /**
     * 下发时间段id
     */
    @Excel(name = "下发时间段id", width = 15)
    @ApiModelProperty(value = "下发时间段id")
    private String ruleItemIds;

    /**
     * 人员id
     */
    @Excel(name = "人员id", width = 15)
    @ApiModelProperty(value = "人员id")
    @Dict(dictTable = "person_basic_info", dicText = "name", dicCode = "id")
    private String personId;

    /**
     * 人员类型
     */
    @Excel(name = "人员类型", width = 15)
    @ApiModelProperty(value = "人员类型")
    private String personType;

    @Excel(name = "人员全名", width = 15)
    @ApiModelProperty(value = "人员全名")
    private String personName;

    /**
     * 下发卡证类型
     */
    @Excel(name = "下发卡证类型", width = 15)
    @ApiModelProperty(value = "下发卡证类型")
    private String sendCardType;
    /**
     * 下发卡证号（人脸对应照片表id）
     */
    @Excel(name = "下发卡证号（人脸对应照片表id）", width = 15)
    @ApiModelProperty(value = "下发卡证号（人脸对应照片表id）")
    private String sendCardCode;

    /**
     * 通行方式
     */
    @Excel(name = "通行方式", width = 15)
    @ApiModelProperty(value = "通行方式")
    private String passType;

    /**
     * 下发来源（1：管理平台 2：微信公众号）
     */
    @Excel(name = "下发来源（1：管理平台 2：微信公众号）", width = 15)
    @ApiModelProperty(value = "下发来源（1：管理平台 2：微信公众号）")
    private String issueSource;
    /**
     * 下发次数，第几次下发
     */
    @Excel(name = "下发次数，第几次下发", width = 15)
    @ApiModelProperty(value = "下发次数，第几次下发")
    private Integer issueNumber;
    /**
     * 特殊权限开始时间，用于请假、外出
     */
    @Excel(name = "特殊权限开始时间，用于请假、外出", width = 15)
    @ApiModelProperty(value = "特殊权限开始时间，用于请假、外出")
    private String specialStartTime;

    /**
     * 特殊权限结束时间，用于请假、外出
     */
    @Excel(name = "特殊权限结束时间，用于请假、外出", width = 15)
    @ApiModelProperty(value = "特殊权限结束时间，用于请假、外出")
    private String specialEndTime;

    /**
     * 下发操作类型 (add,delete,update)
     */
    @Excel(name = "下发操作类型 (add,delete,update,select)", width = 15)
    @ApiModelProperty(value = "下发操作类型 (add,delete,update,select)")
    private String operationType;
    /**
     * 下发状态（0：下发失败 1：下发成功 2：下发中）
     */
    @Excel(name = "下发状态（0：下发失败 1：下发成功 2：下发中 3：已重发）", width = 15)
    @ApiModelProperty(value = "下发状态（0：下发失败 1：下发成功 2：下发中 3：已重发）")
    private Integer sendStatus;
    /**
     * 设备回复状态码
     */
    @Excel(name = "设备回复状态码", width = 15)
    @ApiModelProperty(value = "设备回复状态码")
    private String resultStatus;
    /**
     * 设备回复消息
     */
    @Excel(name = "设备回复消息", width = 15)
    @ApiModelProperty(value = "设备回复消息")
    private String resultMsg;

    /**
     * 是否复制操作 默认不是
     */
    @TableField(exist = false)
    private boolean isCopy = false;

    /**
     * 删除指令 是否获取imei
     */
    @TableField(exist = false)
    private boolean isGetCardCode;

    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    private String orgCode;

    /**
     * 租户ID
     */
    @Excel(name = "租户ID", width = 15)
    @ApiModelProperty(value = "租户ID")
    private Integer tenantId;
    /**
     * 描述
     */
    @Excel(name = "描述", width = 15)
    @ApiModelProperty(value = "描述")
    private String description;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**
     * 创建日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date createTime;
    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**
     * 更新日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    private Date updateTime;

    public boolean getIsCopy() {
        return isCopy;
    }

    public void setIsCopy(boolean copy) {
        isCopy = copy;
    }

    public boolean getIsGetCardCode() {
        return isGetCardCode;
    }

    public void setIsGetCardCode(boolean getCardCode) {
        isGetCardCode = getCardCode;
    }
}
